package cn.chenyu.util;


import java.io.UnsupportedEncodingException;
import java.util.List;

/**
 * 提供些常用的字符串相关的工具方法
 */
public class StringUtil {
    /**
     * 编码转换
     * 将字符串编码转换成coding
     * @param str
     * @param coding
     * @return
     * @throws UnsupportedEncodingException
     */
    public static String ConverStringCoding(String str,String coding) throws UnsupportedEncodingException {
        return new String( str.getBytes(coding) , "utf-8");
    }

    /**
     * 把string array 用指定的符号symbol连接成一个字符串
     *
     * @param array  需要处理的字符串数组
     * @param symbol 链接的符号
     * @return 处理后的字符串
     */
    public  static String joinString(String[] array, String symbol) {
        StringBuffer sb = new StringBuffer("");
        if (array != null) {
            for (String temp : array) {
                if (temp != null && temp.trim().length() > 0)
                    sb.append(temp + symbol);
            }
//            if (result.length() > 1 && CheckUtil.valid(symbol)) {
//                result = result.substring(0, result.length() - symbol.length());
//            }
        }
        return sb.toString();
    }

    /**
     * 把string  list<String>用给定的符号symbol连接成一个字符串
     *
     * @param list   需要处理的列表
     * @param symbol 链接的符号
     * @return 处理后的字符串
     */
    public  static String joinString(List list, String symbol) {
        StringBuffer sb = new StringBuffer("");
        String result = "";
        if (list != null) {
            for (Object o : list) {
                String temp = o.toString();
                if (temp.trim().length() > 0)
                    result += (temp + symbol);
            }
//            if (result.length() > 1) {
//                result = result.substring(0, result.length() - 1);
//            }
        }
        return result;
    }

    /**
     * 判断是否是空字符串 null和"" 都返回 true
     *
     * @param str 判断的字符串
     * @return 是否有效
     */
    public  static boolean isEmpty(String str) {
        return str == null || str.equals("");
    }

    /**
     * 字符串反转
     * @param str
     * @return
     * 21345
     */
    public static String Reverse(String str){
        System.out.println("---"+str);
        if(str == null || str.length()<=1){
            return str;
        }
        System.out.println((str.substring(1))+str.charAt(0));
        return Reverse(str.substring(1))+str.charAt(0);
    }

    /**
     * 判断字符串编码
     * @param str
     * @return
     */
    public static String getEncoding(String str) {
        String encode = "GB2312";
        try {
            if (str.equals(new String(str.getBytes(encode), encode))) {
                String s = encode;
                return s;
            }
        } catch (Exception exception) {
        }
        encode = "ISO-8859-1";
        try {
            if (str.equals(new String(str.getBytes(encode), encode))) {
                String s1 = encode;
                return s1;
            }
        } catch (Exception exception1) {
        }
        encode = "UTF-8";
        try {
            if (str.equals(new String(str.getBytes(encode), encode))) {
                String s2 = encode;
                return s2;
            }
        } catch (Exception exception2) {
        }
        encode = "GBK";
        try {
            if (str.equals(new String(str.getBytes(encode), encode))) {
                String s3 = encode;
                return s3;
            }
        } catch (Exception exception3) {
        }
        return "";
    }

    /**
     * 将字符串首字母转大写
     * @param str 需要处理的字符串
     */
    public  static String upperFirstChar(String str){
        if(isEmpty(str)){
            return "";
        }
        char[] cs=str.toCharArray();
        if((cs[0] >= 'a') && (cs[0] <= 'z')){
            cs[0] -= (char) 0x20;
        }
        return String.valueOf(cs);
    }
}
